home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
090
/
tep2
< prev
next >
Wrap
Text File
|
1985-06-03
|
21KB
|
496 lines
100 REM MACTEP - MACINTOSH TERMINAL EMULATOR PROGRAM
110 REM MOUSE MENUS BY LOFTUS E. BECKER, JR. - CIS 70206,67
130 REM VERSION 1.87 - 6-JUN-84
134 REM PHONE NUMBER EDITOR AND AUTOLOGON BY
135 REM MICHAEL MCKAY, COMPUSERVE 70066,527
137 REM MERGING OF MACTEP VERSION 1.87 WITH AUTO.TEP
138 REM AND OTHER EDITING BY JIM ALIFF, COMPUSERVE 70045,1007
140 REM DENNIS F. BROTHERS - COMPUSERVE 70065,172 - MCI MAIL DBROTHERS
160 REM COPYRIGHT (C) 1984 - BROTHERS ASSOCIATES, WAYLAND MA
170 REM PERMISSION IS HEREBY GRANTED FOR PERSONAL, NON-COMMERCIAL
180 REM REPRODUCTION AND USE OF THIS PROGRAM, PROVIDED THAT THIS
190 REM NOTICE IS INCLUDED IN ANY COPY.
310 CLEAR, 27500,2048
320 CALL TEXTFONT(0): CALL TEXTSIZE (12): CALL TEXTFACE (1): CLS
330 CALL MOVETO (150,50): PRINT "AUTO MACTEP MOUSE 1.87"
335 CALL MOVETO(82,90):PRINT"BASED ON MACTEP V 1.87 BY DENNIS BROTHERS"
340 CALL MOVETO (128, 110): PRINT "MENUS BY LOFTUS E. BECKER, JR."
350 CALL MOVETO (118, 130): PRINT "EDITOR/AUTOLOG BY MICHAEL MCKAY"
355 CALL MOVETO(127,150):PRINT "MERGED AND EDITED BY JIM ALIFF"
360 CALL MOVETO (300, 250): PRINT "INITIALIZING. . . ."
380 DEFINT A-Z
430 BUFFERSIZE=4096
440 BUFLIM=BUFFERSIZE\4
460 FALSE=0: TRUE=-1
480 LF=10: LF$=CHR$(LF)
490 CR=13: CR$=CHR$(CR)
500 XON=17: XON$=CHR$(XON)
510 XOFF=19: XOFF$=CHR$(XOFF)
512 ESC=27: ESC$=CHR$(ESC)
515 PAGELENGTH$=CHR$(29)+"A@"+STRING$(116,64)+"C@"+STRING$(12,64)+"A@"+CHR$(30)
520 PRINTERON$= CHR$(27) + CHR$(68) + CHR$(128) + CHR$(0)+PAGELENGTH$
530 PRINTEROFF$ = CHR$(27) +"C"+CHR$(29)+"0"
550 OPTB$=CHR$(186): SHOPTB$=CHR$(245)
560 CMDD=4: CMDD$=CHR$(CMDD)
565 OPTR$=CHR$(168): SHOPTR$=CHR$(229)
570 OPTT$=CHR$(160): SHOPTT$=CHR$(230)
580 OPTX$=CHR$(197): SHOPTX$=CHR$(244)
590 GOOD1$="CONNECT"
600 BAD1$ = "ERROR": BAD2$ = "BUSY": BAD3$ = "NO CARRIER"
610 START! = TIMER: FINISH! = TIMER
630 AIN=-6: AOUT=-7
640 SB1=&H4000: SB15=&H8000: SB2=&HC000
650 PARNONE=&H0: PARODD=&H1000: PAREVEN=&H3000
660 DB5=&H0: DB6=&H800: DB7=&H400: DB8=&HC00
670 DUPLEX$=""
672 A!=0
673 AUTOLOG=0:XL=0
674 NOW=0
676 WHICHMENU=0:MENULINES=0
678 BLACK=0:SQUEAK=0
680 WHERE=0:INRANGE=0
682 TOP=0:BOTTOM=0
684 CHOICE=0
710 GOSUB 3230
1320 CALL TEXTFACE(0)
1330 CALL PENNORMAL: CALL SHOWPEN: CALL PENMODE(10)
1340 BR! = 300
1430 OPEN "COM1:" AS #1 LEN=BUFFERSIZE
1435 IF BR! <1200 THEN WIDTH 80 ELSE WIDTH 255
1440 WIDTH #1,255
1460 TC=INT((115200!/BR!)+.5)-2
1480 FOR I=0 TO 49\2: PARAMLIST(I)=0: NEXT I
1490 PARAMLIST(24\2)=AIN
1500 PARAMLIST(26\2)=8
1510 PARAMLIST(28\2)=SB1+PARNONE+DB8+TC
1520 CALL CONTROL!(PARAM!)
1540 FOR I=0 TO 49\2: PARAMLIST(I)=0: NEXT I
1550 PARAMLIST(24\2)=AIN
1560 PARAMLIST(26\2)=9
1570 PARAMLIST(28\2)=BUFFERH
1572 PARAMLIST(30\2)=BUFFERL
1574 PARAMLIST(32\2)=BUFFERSIZE
1580 CALL CONTROL!(PARAM!)
1590 GOSUB 7220
1790 GOTO 4220
1810 PRINT: PRINT: PRINT
1840 REM TERMINAL MODE
1842 ON ERROR GOTO 0
1845 CALL TEXTSIZE(9): CALL TEXTFONT(4)
1850 CALL OBSCURECURSOR
1870 CALL PENSIZE(4,1)
1880 XFLAG=FALSE
1890 CALL LINE(0,-4)
1900 IF LOC(1)=0 THEN GOTO 1960
1905 IF NOT RCVXFLAG THEN 1920
1910 IF LOC(1)>BUFLIM AND NOT XFLAG THEN PRINT #1,XOFF$;: XFLAG=TRUE
1920 L$=INPUT$(LOC(1),#1)
1930 CALL TRANSLATE!(XTABLE!,LP!,TLP!)
1940 IF TL<>0 THEN CALL LINE(0,4): PRINT LEFT$(L$,TL);: CALL LINE(0,-4)
1950 IF XFLAG THEN XFLAG=FALSE: PRINT #1,XON$;
1960 C$=INKEY$
1970 IF ABS (MOUSE(0)) = 2 THEN 4220
1980 IF C$="" THEN GOTO 1900
1990 IF C$= CMDD$ THEN LCOPY:LPRINT PRINTEROFF$: GOTO 1900
2000 IF C$=OPTB$ OR C$=SHOPTB$ THEN CALL LINE(0,4): BASIC=TRUE : GOTO 2060
2010 IF C$=OPTR$ OR C$=SHOPTR$ THEN CALL LINE(0,4): BASIC=FALSE: GOTO 2060
2020 IF C$=OPTT$ OR C$=SHOPTT$ THEN CALL LINE(0,4): GOTO 2520
2030 CALL PENNORMAL: CALL SHOWPEN: CALL PENMODE(10): CALL PENSIZE(4,1)
2040 PRINT #1,C$;
2050 GOTO 1900
2060 CALL PENSIZE(6,1)
2090 XFLAG=FALSE: CRFLAG=TRUE: FLUSH=FALSE
2100 PRINT: PRINT "RECEIVE FILE NAME - "
2110 LINE INPUT " (P=PRINTER, C=CLIPBOARD, RETURN=ABORT): ",F$
2120 IF F$="" THEN GOTO 1840
2130 IF F$="C" OR F$="C" THEN F$="CLIP:"
2140 IF F$="P" OR F$="P" THEN F$="LPT1:"
2150 OPEN F$ FOR OUTPUT AS #2: WIDTH #2,255
2160 IF F$<>"LPT1:" AND F$<>"LPT1:" THEN GOTO 2190
2170 PRINT #2,PRINTERON$;
2180 REM
2190 CALL LINE(0,-2)
2200 QUIT=FALSE
2210 WHILE NOT QUIT
2220 IF LOC(1)=0 THEN GOTO 2360
2230 IF NOT RCVXFLAG THEN GOTO 2250
2240 IF LOC(1)>BUFLIM AND NOT XFLAG THEN PRINT #1,XOFF$;: XFLAG=TRUE
2250 L$=INPUT$(LOC(1),#1)
2260 CALL TRANSLATE!(XTABLE!,LP!,TLP!)
2270 IF TL=0 THEN GOTO 2350
2280 CALL LINE(0,2): PRINT LEFT$(L$,TL);: CALL LINE(0,-2)
2290 IF NOT BASIC THEN GOTO 2320
2300 CALL BPROC!(LP!,TLP!,CRFLAGP!,FLUSHP!)
2310 IF TL=0 THEN GOTO 2350
2320 IF NOT RCVXFLAG THEN GOTO 2340
2330 IF LOC(1)>BUFLIM AND NOT XFLAG THEN PRINT #1,XOFF$;: XFLAG=TRUE
2340 PRINT #2,LEFT$(L$,TL);
2350 IF XFLAG THEN XFLAG=FALSE: PRINT #1,XON$;
2360 C$=INKEY$
2370 IF C$="" THEN GOTO 2410
2380 IF C$=OPTB$ OR C$=SHOPTB$ THEN QUIT=TRUE: GOTO 2410
2390 IF C$=OPTR$ OR C$=SHOPTR$ THEN QUIT=TRUE: GOTO 2410
2400 PRINT #1,C$;
2410 WEND
2420 CALL LINE(0,2)
2430 IF F$<>"LPT1:" AND F$<>"LPT1:" THEN GOTO 2450
2440 PRINT #2,PRINTEROFF$
2450 CLOSE #2
2460 IF RIGHT$(F$,1)=":" THEN GOTO 2490
2470 IF BASIC THEN TYPEAPPL$="MSBAMSBA" ELSE TYPEAPPL$="TEXTMACA"
2480 GOSUB 8000
2490 PRINT: PRINT "RECEIVE ENDED": PRINT
2500 GOTO 1840
2520 REM TRANSMIT (UPLOAD) ASCII FILE
2540 CALL PENSIZE(2,1)
2550 XFLAG=FALSE
2560 PRINT: PRINT "TRANSMIT FILE NAME - "
2570 LINE INPUT " (C=CLIPBOARD, RETURN=ABORT): ",F$
2580 IF F$="" THEN GOTO 1840
2590 IF F$="C" OR F$="C" THEN F$="CLIP:"
2600 ON ERROR GOTO 3100
2610 OPEN F$ FOR INPUT AS #2
2620 ON ERROR GOTO 0
2630 PRINT "IF A PROMPT IS SPECIFIED, EACH LINE IS TRANSMITTED ONLY AFTER THE"
2640 PRINT " PROMPT CHARACTER IS RECEIVED FROM THE REMOTE OR TYPED ON THE KEY-"
2650 PRINT " BOARD (IF TYPED ON THE KEYBOARD, IT IS NOT SENT TO THE REMOTE)."
2660 LINE INPUT "PROMPT CHARACTER (RETURN FOR NONE): ",PROMPT$
2670 PRINT "USE X-ON/X-OFF TRANSMIT HANDSHAKING DURING UPLOAD?";
2680 LINE INPUT " (Y/N, RETURN=N): ",C$
2690 IF C$="Y" OR C$="Y" THEN OUTXENAB=1: GOSUB 7220
2700 REM
2710 CALL LINE(0,-6)
2720 QUIT=FALSE
2730 GOFLAG=PROMPT$=""
2740 WHILE NOT (EOF(2) OR QUIT)
2750 IF LOC(1)<>0 THEN GOTO 2860
2760 IF NOT GOFLAG THEN GOTO 2970
2770 LINE INPUT #2,XL$
2780 IF XL$="" THEN GOTO 2830
2790 PCNT=0
2800 FOR I=1 TO LEN(XL$): C$=MID$(XL$,I,1)
2810 IF C$=PROMPT$ THEN PCNT=PCNT+1
2820 PRINT #1,C$;: NEXT I
2830 PRINT #1,CR$;
2840 GOFLAG=PROMPT$=""
2850 IF LOC(1)=0 THEN GOTO 2970
2860 IF NOT RCVXFLAG THEN GOTO 2880
2870 IF LOC(1)>BUFLIM AND NOT XFLAG THEN PRINT #1,XOFF$;: XFLAG=TRUE
2880 L$=INPUT$(LOC(1),#1)
2890 CALL TRANSLATE!(XTABLE!,LP!,TLP!)
2900 IF TL=0 THEN GOTO 2960
2910 IF GOFLAG THEN GOTO 2950
2920 I=0
2930 I=INSTR(I+1,LEFT$(L$,TL),PROMPT$):IF I=0 THEN GOTO 2950
2940 PCNT=PCNT-1: GOFLAG=PCNT<0:IF NOT GOFLAG THEN GOTO 2930
2950 CALL LINE(0,6): PRINT LEFT$(L$,TL);: CALL LINE(0,-6)
2960 IF XFLAG THEN XFLAG=FALSE: PRINT #1,XON$;
2970 C$=INKEY$
2980 IF C$="" THEN GOTO 3020
2990 IF C$=PROMPT$ THEN GOFLAG=TRUE: GOTO 3020
3000 IF C$=OPTT$ OR C$=SHOPTT$ THEN QUIT=TRUE: GOTO 3030
3010 PRINT #1,C$;
3020 IF LOC(1)<>0 THEN GOTO 2860
3030 WEND
3040 CALL LINE(0,6) ' ERASE THE CURSOR
3050 CLOSE #2 ' DONE WITH TRANSMIT FILE
3060 IF OUTXENAB<>0 THEN OUTXENAB=0: GOSUB 7220
3070 PRINT: PRINT "TRANSMIT ENDED": PRINT
3080 GOTO 1840
3100 PRINT: PRINT "COULDN'T OPEN FILE - RETURNING TO TERMINAL MODE.": PRINT
3110 RESUME 1840
3230 REM IMPORTANT THAT ALL VARIABLES BE REFERENCED BEFORE POINTERS SET
3260 DIM MLCODEARRAY(199)
3270 DIM XTABLEARRAY(127)
3280 DIM BUFFERARRAY(BUFFERSIZE/2)
3290 DIM PARAMLIST(39)
3300 I=0: MLLINE=0: MLCHK=0: MLL=0: MLS=0: ML$=""
3310 TL=0
3320 BR!=0: TC=0
3330 OUTXENAB=0
3340 L$="": LP!=0: C$="": XL$=""
3350 F$="": FL=0: FP!=0
3360 TYPEAPPL$=""
3370 BASIC=FALSE: XFLAG=FALSE: RCVXFLAG=TRUE: RCVXFLAG$="X-ON/X-OFF"
3380 CRFLAG=FALSE: FLUSH=FALSE
3390 GOFLAG=FALSE: PCNT=0: PROMPT$=""
3400 C=0
3410 QUIT=0
3430 MLCODE!=0
3440 CONTROL!=0
3450 TRANSLATE!=0
3460 BPROC!=0
3470 GETFILEINFO!=0
3480 SETFILEINFO!=0
3490 XTABLE!=0
3500 BUFFER!=0: BUFFERT!=0: BUFFERH=0: BUFFERL=0
3510 PARAM!=0
3520 TLP!=0: CRFLAGP!=0: FLUSHP!=0
3530 DIM MENU$(12)
3537 DIM PHONENUMBERS$(12,1)
3550 REM NO NEW VARIABLES MAY BE USED AFTER THIS POINT
3560 MLCODE!=VARPTR(MLCODEARRAY(0))
3570 XTABLE!=VARPTR(XTABLEARRAY(0))
3580 BUFFER!=VARPTR(BUFFERARRAY(0))
3590 BUFFERH=INT(BUFFER!/65536!): BUFFERT!=BUFFER!-(BUFFERH*65536!)
3600 IF BUFFERT!<32768! THEN BUFFERL=BUFFERT! ELSE BUFFERL=BUFFERT!-65536!
3610 PARAM!=VARPTR(PARAMLIST(0))
3620 LP!=VARPTR(L$): FP!=VARPTR(F$)
3630 TLP!=VARPTR(TL)
3640 CRFLAGP!=VARPTR(CRFLAG)
3650 FLUSHP!=VARPTR(FLUSH)
3680 RESTORE 9020
3700 READ ML$
3760 MLL=VAL("&H"+MID$(ML$,3,2)+MID$(ML$,1,2))
3770 MLS=VAL("&H"+MID$(ML$,7,2)+MID$(ML$,5,2))
3780 IF MLL=0 THEN GOTO 3850
3790 FOR I=0 TO MLL-1
3800 POKE MLCODE!+MLS+I,VAL("&H"+MID$(ML$,9+I*2,2))
3810 NEXT I
3820 MLLINE=MLLINE+10
3830 GOTO 3700
3850 CONTROL!=MLCODE!+MLCODEARRAY(0)
3860 TRANSLATE!=MLCODE!+MLCODEARRAY(1)
3870 BPROC!=MLCODE!+MLCODEARRAY(2)
3880 GETFILEINFO!=MLCODE!+MLCODEARRAY(3)
3890 SETFILEINFO!=MLCODE!+MLCODEARRAY(4)
3960 FOR I=0 TO 255:POKE XTABLE!+I,0:NEXT I
3970 FOR I=7 TO 13
3980 POKE XTABLE!+I,I: POKE XTABLE!+128+I,I
3990 NEXT I
4000 POKE XTABLE!+10,0: POKE XTABLE!+128+10,0
4010 FOR I=32 TO 126
4020 POKE XTABLE!+I,I: POKE XTABLE!+128+I,I
4030 NEXT I
4050 RETURN
4220 REM MAIN MENU ROUTINE
4230 CALL TEXTSIZE(12): CALL TEXTFONT(0)
4260 WHICHMENU = 1: GOSUB 4710
4270 ON CHOICE GOTO 4280, 5200, 4430, 4440, 4560, 4590, 4600, 5600, 4450, 4620
4280 REM AUTODIAL ROUTINE
4290 WHICHMENU = 2: GOSUB 6010
4300 I=1
4310 REM
4320 IF CHOICE = MENULINES THEN 4220
4325 IF CHOICE=(MENULINES-2) THEN CALL MOVETO(70,50+(15*MENULINES)) ELSE 4332
4327 PRINT "ENTER THE NUMBER TO DIAL:":PRINT PTAB(82) " ( <RETURN> = MENU )"
4330 CALL MOVETO(250,50+(15*MENULINES)):LINE INPUT "",F$
4331 IF F$="" THEN 4280 ELSE DUPLEX$="F0":GOTO 4350
4332 IF CHOICE = (MENULINES - 1) THEN FOR I=1 TO 4000:NEXT ELSE 4340
4334 PRINT #1,"+++" : FOR I=1 TO 20000:NEXT:PRINT #1,"ATH":GOTO 1840
4340 IF CHOICE < (MENULINES -2) THEN F$ = PHONENUMBERS$(CHOICE,1) ELSE 4350
4345 IF LEFT$(PHONENUMBERS$(CHOICE,0),1)<>"C" THEN DUPLEX$="F0" ELSE DUPLEX$="F1"
4347 IF AUTOLOG<>1 THEN 4350
4348 IF LEFT$(L$,1)<>"C" THEN DUPLEX$="F0" ELSE DUPLEX$="F1"
4350 NOW = 0
4360 C$="": PRINT: PRINT #1, "AT" + DUPLEX$ + "D" + F$
4370 IF LOC(1) = 0 THEN GOTO 4400
4380 C=ASC(INPUT$(1,1)) AND &H7F
4390 PRINT CHR$(C);: IF C>28 THEN C$= C$+CHR$(C)
4400 IF INSTR(C$, BAD1$) OR INSTR(C$, BAD2$) OR INSTR(C$, BAD3$) THEN NOW = NOW +1 ELSE 4405
4402 PRINT NOW:FOR I = 1 TO 4000: NEXT
4403 IF NOW>3 THEN AUTOLOG=0:GOTO 4220 ELSE 4360
4405 IF AUTOLOG=1 AND INSTR(C$,GOOD1$) THEN RETURN
4410 IF INSTR(C$, GOOD1$) THEN START! = TIMER: GOTO 1840
4420 IF ABS(MOUSE(0)) = 2 THEN GOTO 4220 ELSE GOTO 4370
4430 CLOSE #1:IF BR! = 300 THEN BR! = 1200 ELSE BR! = 300
4435 GOTO 1430
4440 IF RCVXFLAG=TRUE THEN RCVXFLAG=FALSE:RCVXFLAG$=" NONE":GOTO 4220
4445 RCVXFLAG=TRUE:RCVXFLAG$="X-ON/X-OFF":GOTO 4220
4450 CLS: C$="":CALL MOVETO (130, 50+ (15* MENULINES))
4455 LINE INPUT "NAME OF FILE TO READ: ", F$: IF F$="" THEN 4220
4460 ON ERROR GOTO 4530
4465 CALL MOVETO(130,70+(15*MENULINES)):PRINT "LINE PRINTER? <Y/N>"
4467 C$=INKEY$:IF C$="" THEN 4467
4468 IF (C$<>"Y") AND (C$<>"Y") AND (C$<>"N") AND (C$<>"N") THEN 4467
4469 IF (C$="Y") OR (C$="Y") THEN WIDTH "LPT1:",255:LPRINT PAGELENGTH$;
4470 OPEN F$ FOR INPUT AS #2
4475 CALL TEXTSIZE(9): CALL TEXTFONT(4)
4480 WHILE NOT EOF(2)
4490 LINE INPUT #2, XL$: IF (C$="N") OR (C$="N") THEN PRINT XL$ ELSE PRINT XL$:LPRINT XL$
4500 WEND
4502 IF (C$="Y") OR (C$="Y") THEN LPRINT CHR$(12)+PRINTER0FF$
4505 C$=""
4510 CLOSE #2:CALL TEXTSIZE(12): CALL TEXTFONT(0)
4515 PRINT: PRINT "DOUBLE-CLICK TO CONTINUE. ": GOSUB 5090
4520 ON ERROR GOTO 0: GOTO 4220
4530 CLOSE #2: PRINT "NO SUCH FILE. AVAILABLE FILES ARE:": FILES: GOSUB 5080
4540 IF MOUSE(0) <> 0 THEN 4540
4550 RESUME 4450
4560 CLOSE
4570 CALL TEXTFONT(3): CALL TEXTFACE(0): CALL TEXTSIZE(12): CALL TEXTMODE (0)
4580 CALL MOVETO (70, 50 + (15*MENULINES)): PRINT "BACK TO BASIC."
4585 PRINT PTAB(70) "RESETTING HEAP.": CLEAR, 19000: END
4590 CLOSE: SYSTEM
4600 REM TIMER FUNCTIONS
4610 START! = TIMER: GOTO 4220
4620 PRINT #1, XON$: CLS
4625 CALL TEXTSIZE(12): CALL TEXTFONT(0)
4630 PRINT "DOUBLE-CLICK THE MOUSE TO RETURN TO THE MENU": PRINT
4640 PRINT " CMD-D PRINTS THE ACTIVE WINDOW"
4650 PRINT " OPT-T STARTS AND STOPS ASCII TRANSMIT (UPLOAD)."
4660 PRINT " OPT-R STARTS AND STOPS ASCII RECEIVE (DOWNLOAD)."
4670 PRINT " OPT-B STARTS AND STOPS ASCII BASIC RECEIVE"
4680 PRINT " (LINES NOT BEGINNING WITH A DIGIT ARE IGNORED)."
4690 PRINT: PRINT
4700 GOTO 1840
4710 IF WHICHMENU = 1 THEN RESTORE 4970 'MAIN MENU
4715 IF WHICHMENU = 3 THEN RESTORE 5000 'AUTOLOG MENU
4720 CLS: CALL MOVETO (60,20): I =0: BLACK = 0
4730 READ MENU$(I)
4740 IF MENU$(I) = "-1" THEN MENULINES = I-1 ELSE I=I+1: GOTO 4730
4750 PRINT MENU$(0) TAB(33) "FREESPACE=";FRE(0);" BYTES": ' TITLE
4760 IF WHICHMENU = 1 THEN CALL MOVETO (310, 75): PRINT "("; BR!;")"; ELSE 4775
4765 CALL MOVETO(300,90):PRINT RCVXFLAG$
4770 CALL MOVETO (275, 135): FINISH! = TIMER
4772 PRINT INT((FINISH! - START!)/60*100)/100; "MINUTES";
4775 CALL TEXTMODE(1)
4780 FOR I = 1 TO MENULINES: CALL MOVETO (100, 30 + (15*I))
4785 IF WHICHMENU=1 OR WHICHMENU = 3 THEN PRINT MENU$(I)
4790 IF WHICHMENU=2 OR WHICHMENU=5 THEN PRINT PHONENUMBERS$(I,0) TAB(40) PHONENUMBERS$(I,1)
4792 NEXT I
4795 CALL TEXTMODE(0)
4800 CALL MOVETO (70, 50 + (15*MENULINES)): PRINT "CLICK YOUR CHOICE."
4810 ' ROUTINE TO PRINT BOXES AND GET COMMAND
4820 SQUEAK= MOUSE(0): WHERE = MOUSE(2)
4830 IF WHERE > 38 AND WHERE < (20 + (15*I)) THEN INRANGE = TRUE ELSE INRANGE = FALSE
4840 IF SQUEAK AND BLACK THEN CHOICE = BLACK: RETURN
4850 IF NOT INRANGE AND (BLACK = 0) THEN 4820
4860 IF NOT INRANGE AND (BLACK <> 0) THEN GOSUB 4920: BLACK = 0: GOTO 4820
4870 IF INRANGE THEN NOW = INT(WHERE - 20)\15
4880 IF NOW = BLACK THEN 4820 : ' NO NEED TO CHANGE IF ON A BLACKENED LINE
4890 IF BLACK = 0 THEN BLACK = NOW: GOSUB 4920: GOTO 4820
4900 GOSUB 4920: BLACK = NOW: GOSUB 4920: GOTO 4820: ' WHITEN, THEN BLACKEN
4910 ' SUBROUTINE TO BLACKEN AND WHITEN BOXES
4920 TOP = 18 + BLACK*15: BOTTOM = TOP + 14
4930 CALL PENMODE (10)
4940 LINE(96, TOP) - (380, BOTTOM),,BF
4950 RETURN
4960 ' DATA FOR MENUS
4970 DATA MAIN MENU, AUTODIAL, AUTO LOGON, RESET BAUD RATE, RECEIVE HANDSHAKING
4980 DATA EXIT TO BASIC, EXIT TO SYSTEM, RESET TIMER, EDIT PHONE NUMBERS,VIEW/PRINT FILE
4990 DATA RETURN TO TERMINAL MODE, "-1"
5000 DATA AUTOLOG MENU
5010 DATA COMPUSERVE xxx-xxxx
5015 DATA " (MODIFY LINE NOS. 5010,5225,5250,5260)"
5020 REM INSERT ADDITIONL AUTOLOG DATA HERE.
5070 DATA RETURN TO TERMINAL MODE,-1
5080 CALL MOVETO (180, 50 + (15* MENULINES)): PRINT "DOUBLE-CLICK TO PROCEED";
5090 SQUEAK = MOUSE(0)
5100 IF ABS(SQUEAK) = 2 THEN RETURN ELSE GOTO 5090
5200 REM AUTO LOGON SECTION
5210 WHICHMENU=3: GOSUB 4710
5220 CLS: ON CHOICE GOTO 5225,4620,4620
5225 AUTOLOG=1:L$="COMPUSERVE":F$="xxx-xxxx":GOSUB 4348
5230 AUTOLOG=0:L$="":START!=TIMER:A!=0
5235 PRINT #1,CHR$(3);
5238 WHILE (L$ <> ":") AND (A!<=15) :IF LOC(1)=0 THEN 5239 ELSE L$=INPUT$(1,#1):GOSUB 5500
5239 A!=TIMER-START!:WEND
5240 IF A!>15 THEN PRINT:PRINT "COMPUSERVE TOOK TOO LONG TO RESPOND":FOR I=1 TO 5000:NEXT: GOTO 4620
5250 PRINT #1,"xxxxx,xxxx" ' USER NUMBER
5260 L$="":WHILE L$ <> ":":L$=INPUT$(1,#1):GOSUB 5500:WEND:PRINT #1,"xxxxxxxxxxx" ' PASSWORD
5270 L$="":WHILE L$ <>"C":L$=INPUT$(1,#1):GOSUB 5500:WEND
5280 BEEP:AUTOLOG=0:BEEP:START!=TIMER:BEEP:GOTO 1840
5300 REM INSERT ADDITIONAL AUTOLOG ROUTINES HERE.
5500 CALL TRANSLATE!(XTABLE!,LP!,TLP!)
5510 IF TL<>0 THEN PRINT LEFT$(L$,TL);
5520 IF XFLAG THEN XFLAG=FALSE: PRINT #1,XON$;
5530 RETURN
5600 REM CHANGE PHONE NUMBERS
5610 WHICHMENU=5: GOSUB 6020
5620 MENULINES=XL+1:PHONENUMBERS$(MENULINES,0)="ADD A NEW NUMBER."
5630 MENULINES=XL+2:PHONENUMBERS$(MENULINES,0)="SAVE NUMBERS."
5640 MENULINES=XL+3:PHONENUMBERS$(MENULINES,0)="RETURN TO MENU."
5650 CLS: CALL MOVETO(60,20):BLACK=0:MENU$(0)="EDIT PHONE NUMBERS MENU":GOSUB 4750: C=CHOICE
5660 IF CHOICE = MENULINES THEN 4220
5670 IF CHOICE = (MENULINES - 2) THEN 5740
5680 IF CHOICE = (MENULINES - 1) THEN GOSUB 5780:GOTO 5600
5690 PRINT:PRINT "CURRENT NAME:" PTAB(200) PHONENUMBERS$(C,0)
5700 PRINT " NEW NAME (OR DELETE)":PRINT " <RETURN> = NO CHANGE:" PTAB (200);
5702 LINE INPUT "",L$:IF L$="" THEN 5715 ELSE PHONENUMBERS$(C,0)=L$
5705 IF PHONENUMBERS$(C,0)="DELETE" OR PHONENUMBERS$(C,0)="DELETE" THEN 5707
5706 IF PHONENUMBERS$(C,0)<>"DELETE" THEN 5715
5707 PHONENUMBERS$(C,0)="":PHONENUMBERS$(C,1)=""
5708 FOR I=C TO XL-1:PHONENUMBERS$(I,0)=PHONENUMBERS$(I+1,0)
5709 PHONENUMBERS$(I,1)=PHONENUMBERS$(I+1,1):NEXT
5710 PHONENUMBERS$(XL,0)="":PHONENUMBERS$(XL,1)=""
5712 XL=XL-1:GOTO 5600
5715 PRINT:PRINT "CURRENT NUMBER:" PTAB(200) PHONENUMBERS$(C,1)
5720 PRINT " NEW NUMBER":PRINT " <RETURN> = NO CHANGE:" PTAB(200);
5725 LINE INPUT "",L$:IF L$="" THEN 5600 ELSE PHONENUMBERS$(C,1)=L$
5730 GOTO 5600
5740 XL=XL+1: IF XL=9 THEN XL=8 ELSE 5750
5745 PRINT:PRINT "SORRY - ONLY 8 NUMBERS ALLOWED.":FOR I=1 TO 3000: NEXT :GOTO 5600
5750 PRINT:PRINT "NEW NAME:" PTAB(200);:LINE INPUT "",PHONENUMBERS$(XL,0)
5755 IF PHONENUMBERS$(XL,0)="" THEN XL=XL-1: GOTO 5600
5760 PRINT:PRINT "NEW NUMBER:" PTAB(200);:LINE INPUT "",PHONENUMBERS$(XL,1)
5765 IF PHONENUMBERS$(XL,1)="" THEN XL=XL-1:GOTO 5600
5770 GOTO 5600
5780 OPEN "MODEM.NUMBERS" FOR OUTPUT AS #8
5790 FOR I=1 TO XL
5800 IF PHONENUMBERS$(I,0) <> "" THEN PRINT #8, PHONENUMBERS$(I,0): PRINT #8,PHONENUMBERS$(I,1)
5810 NEXT
5820 CLOSE #8:RETURN
6010 GOSUB 6020: GOTO 6110
6020 IF PHONENUMBERS$(1,0) <> "" AND PHONENUMBERS$(1,1) <> "" THEN MENULINES=XL:GOTO 6100
6030 ON ERROR GOTO 6160
6040 OPEN "MODEM.NUMBERS" FOR INPUT AS #9
6050 FOR I=1 TO 8:IF EOF(9) THEN XL=I-1:GOTO 6090
6060 LINE INPUT #9, PHONENUMBERS$(I,0):IF EOF(9) THEN XL=I-1:GOTO 6090
6070 LINE INPUT #9, PHONENUMBERS$(I,1):MENU$(I)=PHONENUMBERS$(I,1)
6080 NEXT I :XL=8
6090 CLOSE #9
6100 RETURN
6110 MENULINES=XL+1:PHONENUMBERS$(MENULINES,0)="ENTER A NUMBER TO BE DIALED."
6120 MENULINES=XL+2:PHONENUMBERS$(MENULINES,0)="DISCONNECT."
6130 MENULINES=XL+3:PHONENUMBERS$(MENULINES,0)="RETURN TO MENU WITHOUT DIALING."
6140 CLS: CALL MOVETO(60,20):BLACK=0:I=0:MENU$(0)="PHONE NUMBER MENU": GOTO 4750
6160 IF ERL<>6040 THEN 6190
6170 OPEN "MODEM.NUMBERS" FOR OUTPUT AS #8: CLOSE #8
6180 RESUME
6190 ON ERROR GOTO 0
7220 REM SET COMM HANDSHAKE PARAMETERS
7230 FOR I=0 TO 49\2: PARAMLIST(I)=0: NEXT I
7240 PARAMLIST(24\2)=AIN
7250 PARAMLIST(26\2)=10
7260 POKE PARAM!+28,OUTXENAB
7270 POKE PARAM!+29,0
7280 POKE PARAM!+30,XON
7290 POKE PARAM!+31,XOFF
7300 POKE PARAM!+32,0
7310 POKE PARAM!+33,0
7320 POKE PARAM!+34,0
7330 CALL CONTROL!(PARAM!)
7360 RETURN
8000 REM SUBROUTINE TO SET TYPE AND APPLICATION OF A FILE
8020 FL=LEN(F$)
8030 F$=CHR$(FL)+F$
8040 FOR I=0 TO 79: POKE PARAM!+I,0: NEXT I
8050 POKE PARAM!+19,PEEK(FP!+2)
8060 POKE PARAM!+20,PEEK(FP!+3)
8070 POKE PARAM!+21,PEEK(FP!+4)
8080 CALL GETFILEINFO!(PARAM!)
8090 FOR I=1 TO 8
8100 POKE PARAM!+31+I,ASC(MID$(TYPEAPPL$,I,1))
8110 NEXT I
8120 CALL SETFILEINFO!(PARAM!)
8130 RETURN
9020 DATA "1C000000000A0024007600FC01164E56FFF848EE0101FFF8206E0008A0044CEEEF"
9030 DATA "1C001C000101FFF84E5E4E754E56FFE848EE0707FFE8226E000C42811219E181BE"
9040 DATA "1C003800121942821419E1821419E182141920422248246E001042824A4167123A"
9050 DATA "1C0054004280101812B20000670452895282534166F0206E000830824CEE07074E"
9060 DATA "1C007000FFE84E5E4E754E56FFE048EE1F07FFE0206E0014548842801018E18097"
9070 DATA "1C008C001018E180101820402248246E0010266E000C286E0008321242824A416A"
9080 DATA "1C00A800674610180C00000D661A4A546708425436BC0001602E4A53662A36BC8B"
9090 DATA "1C00C400000112C0524260204A54661C4A5367120C0000306D060C0000396F069A"
9100 DATA "1C00E00038BC00016006425312C05242534166BA34824CEE1F07FFE04E5E4E7596"
9110 DATA "1C00FC004E56FFF848EE0101FFF8206E0008A00C4CEE0101FFF84E5E4E754E5696"
9120 DATA "18001801FFF848EE0101FFF8206E0008A00D4CEE0101FFF84E5E4E75C4"
9130 DATA "000000000000"
9580 END
M
E4E754E56